import 'dart:io';
import 'dart:math';

void main() {
  print('main 开始');
  // 同步阻塞代码执行
  // var data = getData();
  // print('获取到的数据: $data');

  // 异步代码执行
  // getData()
  //     .then((data) {
  //       print('获取到的数据: $data');
  //     })
  //     .catchError((error) {
  //       print('错误原因: $error');
  //     });

  handleGetData();

  print('main 结束');
}

// String getData() {
//   //  同步阻塞 2 秒
//   sleep(Duration(seconds: 2));
//   return '666';
// }

handleGetData() async {
  try {
    var res = await getData();
    print('获取到的数据: $res');
  } catch (e) {
    print('错误原因: $e');
  }
}

Future<int> getData() {
  return Future(() {
    int num = Random().nextInt(100);
    sleep(Duration(seconds: 2));
    if (num >= 30) {
      return num;
    } else {
      throw Exception('获取数据失败');
    }
  });
}
